package com.school.chapter02.queue_;
/**
 * @descript: 自定义队列类
 * 根据需要只提供插入,取出,判断是否为空方法
 * @author : dalily
 * @date : 2004-3-27
 */
import java.util.Stack;
import java.util.*;
@SuppressWarnings({"all"})
public class Queue
{
    //存储队列中数据
    private List list = new ArrayList();

    //队列中的起始位置
    private int iPosition = 0;

    //队列插入
    public void insert(Object obj){
        list.add(obj);
    }

    //队列取出
    public Object get(){
        Object obj = list.get(iPosition);
        list.remove(iPosition);
        return obj;

    }
    //队列是否为空
    public boolean isEmpty(){
        return list.size()==0?true:false;
    }

}

/**
 * @descript: 判断字符串是否为回文
 * @author : dalily
 * @date : 2004-3-27
 */
@SuppressWarnings({"all"})
 class Palindrome {

    //将原始数据压入到堆栈里面
    public static Stack pushStack(String strTemp){
        Stack stack = new Stack();
        for (int i = 0;i<strTemp.length();i++){
            stack.push(String.valueOf(strTemp.charAt(i)));
        }
        return stack;

    }

    //将原始数据存入队列
    public static Queue insertQueue(String strTemp){
        Queue queue = new Queue();
        for (int i = 0;i<strTemp.length();i++){
            queue.insert(String.valueOf(strTemp.charAt(i)));
        }
        return queue;

    }

    //判断队列和堆栈是否相等
    public static boolean isEquals(Stack stack, Queue queue){

        boolean bFlag = true;

//存储临时堆栈内容
        String strTempStack = "";

//存储临时队列内容
        String strTempQueue = "";

//循环判断不相等的字符
        while (!stack.empty()){
            strTempStack = stack.pop().toString();
            strTempQueue = queue.get().toString();
            if (!strTempStack.equals(strTempQueue)){
                bFlag = false;
            }
        }
        return bFlag;
    }

    //判断该字符串是否为回文
    public static boolean isReturnString(String str){
        Stack stack = pushStack(str);
        Queue queue = insertQueue(str);
        return isEquals(stack,queue);
    }

    //测试程序
    public static void main(String[] args)
    {
        String strTest = "你是不是你";
        System.out.println("the result is :" + isReturnString(strTest));
    }
}